/**
  ******************************************************************************
  * @file    Project/Bsp/Input.c 
  * @author  Zlf
  * @version V1.0.0
  * @date    2019-05-21
  * @brief   Input.c module
  */

/* Includes ------------------------------------------------------------------*/

	#include "INPUT.h"
	
/* Private typedef -----------------------------------------------------------*/

/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/

/* Private function prototypes -----------------------------------------------*/
static void Input_Init( void );
static void Output_Init( void );

/* Private variables ---------------------------------------------------------*/
F_INPUT_Typedef fInput = {
	.input_init = Input_Init,
	.output_init = Output_Init
};
	
/* Private functions ---------------------------------------------------------*/

/**
  * @brief  This function to initialise INPUT gpio.
  * @param  None
  * @retval None
  */
static void Input_Init( void )
{
	GPIO_InitTypeDef GPIO_InitStructure;

	//configure ESD Arun
	GPIO_InitStructure.GPIO_Pin   = ESD_PIN; 
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;	
	GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
	GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;	
	GPIO_Init( ESD_GPIO, &GPIO_InitStructure );

	//input
	
	GPIO_InitStructure.GPIO_Pin   = INPUT_PIN_0 | INPUT_PIN_1 | INPUT_PIN_2 | INPUT_PIN_3; 	
	GPIO_Init( INPUT_GPIO, &GPIO_InitStructure );
	GPIO_InitStructure.GPIO_Pin   = INPUT_PIN_4 | INPUT_PIN_5; 	
	GPIO_Init( INPUT_GPIO2, &GPIO_InitStructure );
	GPIO_InitStructure.GPIO_Pin   = INPUT_PIN_6 | INPUT_PIN_7; 	
	GPIO_Init( INPUT_GPIO3, &GPIO_InitStructure );
	
}

static void Output_Init( void )
{
	GPIO_InitTypeDef GPIO_InitStructure;

	//configure OUT 
	GPIO_InitStructure.GPIO_Pin   = OUTPUT_PIN_0 | OUTPUT_PIN_1 | OUTPUT_PIN_2 | OUTPUT_PIN_3 |
									OUTPUT_PIN_4 | OUTPUT_PIN_5 | OUTPUT_PIN_6 | OUTPUT_PIN_7 ;
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;	
	GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
	GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;	
	GPIO_Init( OUTPUT_GPIO, &GPIO_InitStructure );

	OUT0_BIT(1);
	OUT1_BIT(1);
	OUT2_BIT(1);
	OUT3_BIT(1);
	OUT4_BIT(1);
	OUT5_BIT(1);
	OUT6_BIT(1);
	OUT7_BIT(1);
}

